﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MySql.Data.MySqlClient;
using MySql.Data.Types;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Collections.Generic;

/// <summary>
/// Clase contenedora de Grupos
/// </summary>

namespace GCon
{
    public class Con_Grupos
    {
        public Con_Grupos()
        {
            dGrupos = new Dictionary<string, Con_Grupo>();
        }

        public void ListaGrupos()
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Grupo oGrupo;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaGrupos()";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                // He quitado esta referencia para que cuadren los 7 parametros que pides en el constructor
                //, dr["CURSO_ID_PK"].ToString()
                oGrupo = new Con_Grupo  (dr["GRUPO_ID_PK"].ToString(), dr["GRUPO_NOMBRE"].ToString(), dr["GRUPO_HORARIO"].ToString(), dr["GRUPO_CODIGO"].ToString(), dr["ESTADO_GRUPO_ID_PK"].ToString(), dr["GRUPO_FECHA_INICIO"].ToString(), dr["GRUPO_FECHA_FIN"].ToString());
                dGrupos.Add(oGrupo.Get_ID_PK(), oGrupo);
                oGrupo = null;
            }

            oConexion.Close();
        }

        public void GruposCerrados()
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Grupo oGrupo;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL GruposCerrados()";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oGrupo = new Con_Grupo(dr["GRUPO_ID_PK"].ToString(), dr["GRUPO_NOMBRE"].ToString(), dr["GRUPO_HORARIO"].ToString(), dr["GRUPO_CODIGO"].ToString(), dr["ESTADO_GRUPO_ID_PK"].ToString(), dr["GRUPO_FECHA_INICIO"].ToString(), dr["GRUPO_FECHA_FIN"].ToString());
                dGrupos.Add(oGrupo.Get_ID_PK(), oGrupo);
                oGrupo = null;
            }

            oConexion.Close();
        }

        public void GrupoPorProfesorAsignatura(String IdProfesor, String IdAsignatura)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Grupo oGrupo;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL GrupoPorProfesorAsignatura(" + IdProfesor + "," + IdAsignatura  + ")";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oGrupo = new Con_Grupo(dr["GRUPO_ID_PK"].ToString(), dr["GRUPO_NOMBRE"].ToString(), dr["GRUPO_HORARIO"].ToString(), dr["GRUPO_CODIGO"].ToString(), dr["ESTADO_GRUPO_ID_PK"].ToString(), dr["GRUPO_FECHA_INICIO"].ToString(), dr["GRUPO_FECHA_FIN"].ToString());
                dGrupos.Add(oGrupo.Get_ID_PK(), oGrupo);
                oGrupo = null;
            }

            oConexion.Close();
        }

        public Con_Grupo GetGrupo(String Id)
        {
            return this.dGrupos[Id];
        }

        public int cuenta()
        {
            return this.dGrupos.Count;
        }

        /// Atributos
        private Dictionary<String, Con_Grupo> dGrupos;
    }
}
